                ORG 100H
                .RADIX 16D
PRGCIM          EQU 7530h
PRHOSSZ         EQU -PRGCIM
CHARS           EQU 0           ;1-nel chars van
USR             EQU 0a6a8h
BEEP            EQU 1           ;1-nel 03B5 el
R10             EQU 0           ;1-nel RST 10 rutinok elnek
SCREEN          EQU 1           ;1-nel SCR van
KEYSCAN         EQU 1           ;1-nel 028E hivas van
IRUPT           EQU 1           ;1-nel EI
IM1             EQU 1           ;1-nel FRAMES no
SCR2            EQU 0           ;1-nel MFACE SCR is kell
                JP KEZD
IRQVEG          JP IRQEND
IRQEND     IF IM1=1
                PUSH AF
                PUSH HL
                PUSH DE
                PUSH BC
                LD HL,(5C78)
                INC HL
                LD (5C78),HL
                CALL ASCII
                POP BC
                POP DE
                POP HL
                POP AF
            ENDIF
                EI
                RET
IRQ             LD (SPM+1),SP
                LD SP,3C00
                PUSH AF
IDOZ            LD A,8
                DEC A
                LD (IDOZ+1),A
                JR NZ,NKONV
                LD A,8
                LD (IDOZ+1),A
                CALL KONV
NKONV           LD A,30
                OUT (0B4),A
                POP AF
SPM             LD SP,0
                JP IRQVEG
IRQJUMP         EQU IRQVEG+1
KONV            PUSH HL
                PUSH DE
                PUSH BC
                PUSH IX
                LD A,0FCH
                OUT (0B3),A
                LD H,0F0H
                LD IX,5800
                LD BC,300
                LD DE,0E000
KONVC           LD L,(IX)
                LDI
                INC IX
                JP PE KONVC
                LD A,0FBH
                OUT (0B3),A
                POP IX
                POP BC
                POP DE
                POP HL
                RET
UBI             EX (SP),HL
                LD (PAR+1),HL
                INC HL
                EX (SP),HL
                PUSH AF
PAR             LD A,(0)
                CP 1FH
                JR NZ,UBI1
KEM             POP AF
                PUSH HL
                PUSH BC
                LD HL,0
                LD BC,0B5
KEMPC           OUT (C),B
                IN A,(0B6)
                RRA
                CCF
                RL L
                LD A,5
                ADD A,B
                OUT (C),A
                IN A,(0B6)
                RRA
                CCF
                RL H
                INC B
                LD A,B
                CP 5
                JR NZ KEMPC
                LD A,H
                OR L
                POP BC
                POP HL
                RET
UBI1            CP 78
                JR NZ,UBI4
UBI2            LD A,C
                CP 01FH
                JR Z,KEM
                POP AF
UBI3    PUSH DE
        CALL UBILLC
        LD A,D
        POP DE
        RET
UBI4            CP 0FEH
                JR NZ,INVALID
                POP AF
                PUSH BC
                LD B,A
                CALL UBI3
                POP BC
                RET
INVALID         POP AF
                LD A,-1
                RET
UBILLC  PUSH AF
        ld a,0ffh
        ld (ered+1),a
        ld a,b
        push BC
        push hl
        push de
        ex af,af'
        push af
        ex af,af'
        ld b,8
        ld de,0ah
        ld hl,billtab
bill1   rlca
        jr c,bill3
        ex af,af'
                PUSH HL
        ld c,0fh
bill2   ld a,(hl)
        inc hl
        out (0b5),a
        in a,(0b5)
        and (hl)
        cp (hl)
        ccf
        inc hl
        rl c
        jr nc,bill2
        ld a,(ered+1)
        and c
        ld (ered+1),a
                POP HL
        ex af,af'
bill3   add hl,de
        djnz bill1
        ex af,af'
        pop af
        ex af,af'
        pop de
        pop hl
        pop bc
ERED            LD D,0
                LD A,B
                CP 0EFH
                JR NZ,BILLVEG
                PUSH HL
                PUSH BC
                LD HL,SINCL2T
                LD C,0FH
CURS2           LD A,(HL)
                INC HL
                OUT (0B5),A
                IN A,(0B5)
                AND (HL)
                CP (HL)
                CCF
                RL C
                INC HL
                JR NC,CURS2
                LD A,D
                AND C
                LD D,A
                POP BC
                POP HL
BILLVEG POP AF
        ret
SINCL2T         DB 7,20,7,4,7,2,7,8,8,40
billtab db 0,4,0,1,8,1,8,20,8,40
        db 1,1,6,1,6,4,6,10,7,40
        db 2,4,2,1,9,1,9,4,9,10
        db 3,4,3,1,5,1,5,4,5,10    ;6,7,8,9,0
        db 3,10,3,8,3,20,3,40,3,2  ;5,4,3,2,1
        db 2,10,2,8,2,20,2,40,2,2
        db 1,4,1,10,1,8,1,20,1,40
        db 0,10,0,8,0,20,0,40,0,80
                .RADIX 10D
LINE    db 255,14h,15,2fh,0,0,0,0
SZINEK          DEFB 0,4,1,5,90H,6,3,7
KEZD            DI
        LD HL,VEGE+1
MASZ    LD A,R
        ADD A,A
        ADD A,L
        ADD A,H
        LD (HL),A
        INC HL
        LD A,H
        CP 40H
        JR NZ,MASZ
        LD HL,KEZDCIM
                LD DE,3000H
                LD BC,VEGE1-KEZDET+1
                LDIR
                JP 3000H
KEZDCIM         EQU $
                .PHASE 3000H
KEZDET    LD SP,3D00H
 LD BC,11CH
 LD D,38H
 EXOS 16
 LD C,0FAH
 EXOS 25
 LD C,0FBH
 EXOS 25
 LD C,0FCH
 EXOS 25
 LD C,0FDH
 EXOS 25
 LD A,0FDH
 OUT (0B1H),A
 LD A,0FAH
 OUT (0B2H),A
 LD A,0FBH
 OUT (0B3H),A
                CALL LPT
                CALL ATTRTAB
        IF R10=1
                CALL R10INI
        ENDIF
        IF SCREEN=1
                LD DE,SCR
                LD HL,4000H
                LD BC,1B00H
                CALL TOLT
                CALL KONV
         ENDIF
         IF CHARS=1
                LD DE,CHAR
                LD HL,3D00H
                LD BC,300H
                CALL TOLT
         ENDIF
                LD DE,PRG
                LD HL,PRGCIM
                LD BC,PRHOSSZ
                CALL TOLT
         IF SCR2=1
                LD DE,MFACE
                LD HL,4000H
                LD BC,1B00H
                CALL TOLT
                CALL KONV
                LD B,80H
SZUNET          HALT
                DJNZ SZUNET
         ENDIF
                DI
                XOR A
                OUT (81H),A
                LD A,30H
                OUT (0B4H),A
                LD A,18H
                OUT (0A8H),A
                OUT (0ACH),A
                LD A,0C3H
                LD HL,UBI
                LD (20H),A
                LD (21H),HL
                LD HL,FEPORT
                LD (8),A
                LD (9),HL
                LD HL,IRQ
                LD (38H),A
                LD (39H),HL
        IF BEEP=1
                LD HL,BEEPER
                LD DE,03B5H
                LD BC,BEEPVEG-BEEPER+1
                LDIR
        ENDIF
        IF KEYSCAN=1
                LD HL,KEYSC1
                LD DE,028EH
                LD BC,KEYSCV-KEYSC1
                LDIR
        ENDIF
        IF IRUPT=1
                EI
        ENDIF
                JP USR
ASCII           LD HL,ASCTAB
                LD BC,0AB5H
ASCII1          LD D,1
                DEC B
ASCII2          OUT (C),B
                IN A,(C)
                AND D
                LD A,(HL)
                JR Z,ASCII3
                INC HL
                RLC D
                JR NC,ASCII2
                INC B
                DJNZ ASCII1
ASCII3          LD (5C08H),A
                RET
ASCTAB          DB "I",-1
                DEFM "O@P["
                DB -1,-1,"M",-1
                DEFB ",","/",".",0CH,20H,-1
                DB 0AH,-1,-1,-1,-1,-1,0DH,-1
                DB "J",-1
                DEFM "K;L:]"
                DB -1,"8",-1
                DEFM "9-0^"
                DEFB -1,-1,-1,-1,-1,-1,-1,-1,-1,-1
                DEFM "7164532"
                DEFB -1
                DEFM "UQYRTEW"
                DEFB -1,"H",-1
                DEFM "GDFSA"
                DEFB -1
                DEFM "N\BVCXZ"
                DEFB 0EH,-1
FEPORT          PUSH HL
                PUSH AF
                LD HL,SZINEK
                AND 7
                ADD A,L
                LD L,A
                ADC A,H
                SUB L
                LD H,A
                LD A,(HL)
                OUT (81H),A
                POP AF
                PUSH AF
                AND 10H
                JR Z,FEP1
                LD A,18H
FEP1            OUT (0A7H),A
                POP AF
                POP HL
                RET 
        IF R10=1
RST10           DEFB 5
                DEFM "RST10"
        ENDIF
        IF CHARS=1
CHAR            DEFB 5
                DEFM "CHARS"
        ENDIF
        IF SCREEN=1
SCR             DEFB 3
                DEFM "SCR"
        ENDIF
PRG             DEFB 3
                DEFM "PRG"
        IF SCR2=1
MFACE           DEFB 5
                DEFM "MFACE"
         ENDIF
                .RADIX 10D
sync    db 0f5h,2,0,0,0,0,0,0
        db 0,0,0,0,0,0,0,0
        db 247,8,11,73h,0b8h,0feh
        db 0e9h,1,0,216,216,0,0,0,0,0
        db 217,12h,63,0,0,0,0,0
        db 0,0,0,0,0,0,0,0
        db 253,16,63,0,0,0,0,0,
        db 0,0,0,0,0,0,0,0
        db 252,16,6,63,0,0,0,0
        db 0,0,0,0,0,0,0,0
        db 255,90h,63,32,0,0,0,0
        db 0,0,0,0,0,0,0,0
        db 252,12h,6,63,0,0,0,0
        db 0,0,0,0,0,0,0,0
        db 207,13h,63,0,0,0,0,0
        db 0,0,0,0,0,0,0,0
HOSSZ           EQU $-SYNC
LPT       LD A,0FCH
        OUT (0B1H),A
                LD A,192D
        ld de,4000h
        exx
        ld de,4000h
        ld hl,4004h
        ld bc,13
lpt1    ex af,af'
        exx
        ld hl,line
        ld bc,16
        ldir
        exx
        ld (hl),e
        inc hl
        ld a,d
        rra
        rra
        rra
        and 3
        or 20H
        ld (hl),a
        inc hl
        ld (hl),e
        inc hl
        ld (hl),d
        add hl,bc
        inc d
        ld a,d
        and 7
        jr nz,lpt2
        ld a,e
        add a,32
        ld e,a
        ccf
        sbc a,a
        and 0f8h
        add a,d
        ld d,a
lpt2    ex af,af'
        dec a
        jr nz,lpt1
        exx
        ld hl,sync
        ld bc,hossz
        ldir
                XOR A
                OUT (82H),A
                LD A,192
                OUT (83H),A
                LD A,0FDH
                OUT (0B1H),A
                RET
ATTRTAB         LD A,0FCH
                OUT (0B1H),A
        ld hl,7000H
        ld b,-1
konc1   ld a,l
        rla
        and 0f0h
        ld c,a
        ld a,l
        and 7
        or c
        bit 6,l
        jr z,kon3
        rra
        jr nc,kon1
        set 2,a
kon1    bit 3,a
        jr nz,kon2
        res 6,a
kon2    OR 88H
                LD C,A
                AND 7
                JR NZ,KON21
                RES 3,C
KON21           LD A,C
                AND 70H
                JR NZ,KON22
                RES 7,C
KON22           LD A,C
kon3    ld (hl),a
        inc hl
        djnz konc1
                LD A,0FDH
                OUT (0B1H),A
                RET
TOLT            PUSH BC
                PUSH HL
                LD A,1
                EXOS 1
                POP DE
                POP BC
                LD A,1
                EXOS 6
                LD A,1
                EXOS 3
                EI
                LD B,80H
VARAS           HALT
                DJNZ VARAS
                RET
        IF R10=1
R10INI     LD DE,RST10
           LD HL,6000h
           LD BC,646H    ;MAS LESZ
           CALL TOLT
           LD HL,6000h
           LD DE,9F4H    ;9F4-RE
           LD BC,4B8H
           LDIR
           LD DE,15AFH   ;15AF-RE
           LD C,0A3H
           LDIR
           LD DE,16DBH
           LD C,0AH
           LDIR
           LD DE,203CH
                LD C,9
                LDIR
           LD DE,2211H   ;2211-RE
           LD C,0DAH
           LDIR
           ld hl,3c00h
           LD (5C36H),HL;CHARS
           LD IY,5C3AH
           LD HL,5CB6H
           LD (5C4FH),HL;CHANS
           LD DE,15AFH
           LD C,15H
           EX DE,HL
           LDIR
           LD (23639D),DE;DATADD
           LD A,38H
           LD (5C8DH),A;ATTR-P
           LD (5C8FH),A;ATTR-T
           LD (5C48H),A;BORDCR
           LD HL,15C6H   ;5C10-RE
           LD DE,5C10H
           LD C,0EH
           LDIR
           LD A,2
           LD (5C6BH),A;DF-SZ
           ld hl,-0a8h
           ld (5c7bh),hl;UDG
           ld a,0c3h
           ld hl,15f2h
           ld (10h),a
           ld (11h),hl
           CALL 0D6BH
           CALL KONV
           RET
        ENDIF
      IF BEEP=1
beeper  di
        ld a,l
        srl l
        srl l
        cpl
        and 3
        ld c,a
        ld b,0
        ld ix,03B5H+BAZIS-BEEPER
        add ix,bc
        xor a
BAZIS   nop
        dw 0
        inc b
        inc c
beep1   dec c
        jr nz,beep1
        ld c,3fh
        dec b
        jp nz,beep1
        xor 18h
        out (0a7h),a
        ld b,h
        ld c,a
        bit 4,a
        jr nz,beep2
        ld a,d
        or e
        jr z,beend
        ld a,c
        ld c,l
        dec de
        jp (ix)
beep2   ld c,l
        inc c
        jp (ix)
beend   ei
        ret
      ENDIF
BEEPVEG         EQU $
      IF KEYSCAN=1
KEYSC1          LD L,2FH
                LD DE,-1
                LD BC,0FEFEH
KEY_LINE        RST 20H
                DEFB 78H
                CPL
                AND 1FH
                JR Z,KEY_DONE
                LD H,A
                LD A,L
K_3KEYS         INC D
                RET NZ
KEY_BITS        SUB 8
                SRL H
                JR NC,KEY_BITS
                LD D,E
                LD E,A
                JR NZ,K_3KEYS
KEY_DONE        DEC L
                RLC B
                JR C,KEY_LINE
                LD A,D
                INC A
                RET Z
                CP 28H
                RET Z
                CP 19H
                RET Z
                LD A,E
                LD E,D
                LD D,A
                CP 18
                RET
                JP ASCII
KEYSCV          EQU $
        ENDIF
VEGE1           EQU $
                .DEPHASE
VEGE

